#pragma once

#include "IScene.h"
#include "..\RenderEngineUtils\Camera.h"
#include "Blur.h"
#include "ShadowMapper.h"
#include "Ground.h"
#include "MultiModel.h"
#include "Managers.h"

class Scene03 : public IScene
{
private:
	Managers *managers;

	Model *passageway;
	MultiModel *doors;
	MultiModel *neons;
	MultiModel *neonCases;

	Animation *anim;

	Camera *scena3camera1;
	Camera *scena3camera2;
	Camera *scena3camera3;
	Camera *scena3camera4;
	Camera *scena3camera5;
	Camera *scena3camera6;
	Camera *scena3camera7;
	Camera *scena3camera8;

	Camera *currentCam;

	Shader *vpSpecular;
	Shader *fpSpecular;
	Shader *vpDof;
	Shader *fpDof;
	Shader *vpBlur;
	Shader *fpBlur;

	Framebuffer *framebuffer;
	Texture *orTexture;
	DepthTexture *orDepthTexture;
	Blur *blur;

	float lights[3 * 17];
	float lightsTargets[3 * 17];

	float idm[16];
	CGparameter modelMatrix;

	CGparameter cgpSpotLightPos;
	CGparameter cgpSpotLightTargetPos;
	CGparameter cgpFade;

	float fade;
	float fadeMod;

	float end_tloFade;
	float end_tloFadeMod;
	float end1Fade;
	float end1FadeMod;
	float end2Fade;
	float end2FadeMod;
	float end3Fade;
	float end3FadeMod;

	void SetLights();
	void SetAnimation();

public:
	Scene03(Managers *managers);
	~Scene03(void);

	void Initialize();

	void Prepare();
	void Render(float ms);
	void Notify(float time, const char *type, const char *value);
};
